From 5723487e08f97c301cea811fbb6474adbc838ded Mon Sep 17 00:00:00 2001 From: Jakub Kuderski Date: Fri, 13 Jan 2023 10:55:04 -0500 Subject: [PATCH] [PATCH] [mlir][spirv] Fix crash in spirv-lower-abi-attributes ... when the are no SPIR-V env attributes. Fixes: https://github.com/llvm/llvm-project/issues/59983 Reviewed By: antiagainst Differential Revision: https://reviews.llvm.org/D141695 Gbp-Pq: Name CVE-2023-29939.patch --- .../Dialect/SPIRV/Transforms/LowerABIAttributesPass.cpp | 7 ++++++- mlir/test/Dialect/SPIRV/Transforms/abi-interface.mlir | 7 +++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/mlir/lib/Dialect/SPIRV/Transforms/LowerABIAttributesPass.cpp b/mlir/lib/Dialect/SPIRV/Transforms/LowerABIAttributesPass.cpp index 263f00ef1d..2ef02a6992 100644 --- a/mlir/lib/Dialect/SPIRV/Transforms/LowerABIAttributesPass.cpp +++ b/mlir/lib/Dialect/SPIRV/Transforms/LowerABIAttributesPass.cpp @@ -239,7 +239,12 @@ void LowerABIAttributesPass::runOnOperation() { spirv::ModuleOp module = getOperation(); MLIRContext *context = &getContext(); - spirv::TargetEnv targetEnv(spirv::lookupTargetEnv(module)); + spirv::TargetEnvAttr targetEnvAttr = spirv::lookupTargetEnv(module); + if (!targetEnvAttr) { + module->emitOpError("missing SPIR-V target env attribute"); + return signalPassFailure(); + } + spirv::TargetEnv targetEnv(targetEnvAttr); SPIRVTypeConverter typeConverter(targetEnv); diff --git a/mlir/test/Dialect/SPIRV/Transforms/abi-interface.mlir b/mlir/test/Dialect/SPIRV/Transforms/abi-interface.mlir index b6b9621223..7b8a7b964f 100644 --- a/mlir/test/Dialect/SPIRV/Transforms/abi-interface.mlir +++ b/mlir/test/Dialect/SPIRV/Transforms/abi-interface.mlir @@ -29,3 +29,10 @@ spv.module Logical GLSL450 { } // end spv.module } // end module + +// ----- + +module { +// expected-error@+1 {{'spirv.module' op missing SPIR-V target env attribute}} +spirv.module Logical GLSL450 {} +} // end module -- 2.30.2